home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / programming / libraries / patchlibv3.lha / patchlibrary / examples / ASMMacros.i next >
Text File  |  1994-01-25  |  3KB  |  108 lines

  1.           IFND CALL_MACRO_I
  2. CALL_MACRO_I  SET  1
  3.  
  4. ;***************************************
  5. ;**** Usefull Assembler Macros V1.5 ****
  6. ;**** (C) 1992/1993 Stefan Fuchs    ****
  7. ;***************************************
  8.  
  9. ;--------------------------------------------------------------
  10. ;--------- CALL jump to Library function (and set LibraryBase)
  11. ;--------------------------------------------------------------
  12.  
  13. CALL    MACRO
  14.     IFGT    NARG-2
  15.         FAIL "Too many arguments for call makro"
  16.     ENDIF
  17.     IFEQ NARG-2
  18.     move.l    \2,a6
  19.     ENDIF
  20.     jsr    \1(a6)
  21.     ENDM
  22.  
  23. ;--------------------------------------------------------------
  24. ;-------- BSREQ branch to subroutine if equal
  25. ;-------- BSREQ Subroutine[,Label after bsr]
  26. ;--------------------------------------------------------------
  27. BSREQ    MACRO
  28.     IFGT    NARG-2
  29.         FAIL "Too many arguments for BSREQ makro"
  30.     ENDIF
  31.     bne BSREQ\@
  32.     bsr \1
  33.     IFEQ NARG-2
  34.     bra \2
  35.     ENDIF
  36. BSREQ\@
  37.     ENDM
  38. ;--------------------------------------------------------------
  39. ;-------- BSRNE branch to subroutine if not equal
  40. ;-------- BSRNE Subroutine[,Label after bsr]
  41. ;--------------------------------------------------------------
  42. BSRNE    MACRO
  43.     IFGT    NARG-2
  44.         FAIL "Too many arguments for BSRNE makro"
  45.     ENDIF
  46.     beq BSRNE\@
  47.     bsr \1
  48.     IFEQ NARG-2
  49.     bra \2
  50.     ENDIF
  51. BSRNE\@
  52.     ENDM
  53.  
  54. ;--------------------------------------------------------------
  55. ;-------- SKIPLISTHEADER  Returns a pointer to first node in a list
  56. ;-------- SKIPLISTHEADER ax,NOListErrorLabel,EmptyListErrorLabel
  57. ;---------ax includes pointer to ListHeader
  58. ;--------------------------------------------------------------
  59. SKIPLISTHEADER    MACRO
  60.     IFGT    NARG-3
  61.         FAIL "Too many arguments for SKIPLISTHEADER makro"
  62.     ENDIF
  63.     tst.l (\1)
  64.     beq \2
  65.     move.l (\1),\1
  66.     tst.l (\1)
  67.     beq \3
  68.     ENDM
  69.  
  70. ;--------------------------------------------------------------
  71. ;-------- OPENLIB open a library and test returncode
  72. ;-------- OPENLIB LibNameLabel,Version[,Label to branch on Error]
  73. ;-------- Destroys d0-d1/a0-a1/a6
  74. ;--------------------------------------------------------------
  75. OPENLIB    MACRO
  76.     IFGT    NARG-3
  77.         FAIL "Too many arguments for OPENLIB makro"
  78.     ENDIF
  79.     move.l #\1,a1
  80.     moveq.l #\2,d0
  81.     move.l 4.w,a6
  82.     jsr -552(a6)
  83.     IFEQ NARG-3
  84.     tst.l d0
  85.     beq \3
  86.     ENDIF
  87.     ENDM
  88.  
  89. ;--------------------------------------------------------------
  90. ;-------- CLOSELIB test librarybase on non-null and close a library
  91. ;-------- CLOSELIB LibBaseLabel
  92. ;-------- Destroys d0-d1/a0-a1/a6
  93. ;--------------------------------------------------------------
  94. CLOSELIB    MACRO
  95.     IFGT    NARG-1
  96.         FAIL "Too many arguments for CLOSELIB makro"
  97.     ENDIF
  98.     tst.l \1
  99.     beq CLOSELIB\@
  100.     move.l \1,a1
  101.     move.l 4.w,a6
  102.     jsr -414(a6)
  103. CLOSELIB\@
  104.     ENDM
  105.  
  106.  
  107.     ENDC
  108.